]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
messageTray: Clean up _updateState for the summary box pointer
authorJasper St. Pierre <jstpierre@mecheye.net>
Fri, 2 Aug 2013 03:41:16 +0000 (23:41 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Fri, 16 Aug 2013 01:52:59 +0000 (21:52 -0400)
This code still isn't great, but it's an improvement over what we
had before.

js/ui/messageTray.js

index 8730c974933c82ded0d173c9eeede4b93ec86296..f17e709e7eef2ce1cce38cde892053b61ad733eb 100644 (file)
@@ -2273,29 +2273,29 @@ const MessageTray = new Lang.Class({
 
         // Summary notification
         let haveClickedSummaryItem = this._clickedSummaryItem != null;
-        // We only have sources with empty notification stacks for legacy tray icons. Currently, we never attempt
-        // to show notifications for legacy tray icons, but this would be necessary if we did.
         let requestedNotificationStackIsEmpty = (haveClickedSummaryItem &&
                                                  this._clickedSummaryItemMouseButton == 1 &&
                                                  this._clickedSummaryItem.source.notifications.length == 0);
-        let wrongSummaryNotificationStack = (haveClickedSummaryItem &&
-                                             this._clickedSummaryItemMouseButton == 1 &&
-                                             this._summaryBoxPointer.bin.child != this._clickedSummaryItem.notificationStackWidget);
-        let wrongSummaryRightClickMenu = (haveClickedSummaryItem &&
-                                          this._clickedSummaryItemMouseButton == 3 &&
-                                          this._clickedSummaryItem.rightClickMenu != null &&
-                                          this._summaryBoxPointer.bin.child != this._clickedSummaryItem.rightClickMenu);
-        let wrongSummaryBoxPointer = (haveClickedSummaryItem &&
-                                      (wrongSummaryNotificationStack || wrongSummaryRightClickMenu));
 
         if (this._summaryBoxPointerState == State.HIDDEN) {
             if (haveClickedSummaryItem && !requestedNotificationStackIsEmpty)
                 this._showSummaryBoxPointer();
         } else if (this._summaryBoxPointerState == State.SHOWN) {
-            if (!haveClickedSummaryItem || wrongSummaryBoxPointer || !hasNotifications) {
-                this._hideSummaryBoxPointer();
-                if (wrongSummaryBoxPointer)
+            if (haveClickedSummaryItem && hasNotifications) {
+                let wrongSummaryNotificationStack = (this._clickedSummaryItemMouseButton == 1 &&
+                                                     this._summaryBoxPointer.bin.child != this._clickedSummaryItem.notificationStackWidget &&
+                                                     requestedNotificationStackIsEmpty);
+                let wrongSummaryRightClickMenu = (this._clickedSummaryItemMouseButton == 3 &&
+                                                  this._clickedSummaryItem.rightClickMenu != null &&
+                                                  this._summaryBoxPointer.bin.child != this._clickedSummaryItem.rightClickMenu);
+                let wrongSummaryBoxPointer = (wrongSummaryNotificationStack || wrongSummaryRightClickMenu);
+
+                if (wrongSummaryBoxPointer) {
+                    this._hideSummaryBoxPointer();
                     this._showSummaryBoxPointer();
+                }
+            } else {
+                this._hideSummaryBoxPointer();
             }
         }